A priority of many business organizations is to deliver new products, such as software system solutions, as quickly as possible at the lowest possible cost. Achieving this goal can be difficult if detailed information about the software systems, such as system architecture and relationships between system components, is not properly maintained. Accordingly, businesses are increasingly using repositories (e.g. Service-Oriented Architecture (SOA) repositories, Application Lifecycle Management (ALM) repositories, etc.) to keep track of their software portfolios. The use of repositories, which maintain detailed models of the software products, has significantly improved traceability and visibility of complex software systems. However, due to the increasing size and complexity of the information maintained in the repositories, a proper understanding of the architecture and interrelationships between the various components of the software systems can be difficult, creating obstacles to achieving the goal of quickly reviewing, updating, designing and optimizing software products in response to customer demands and rapidly changing conditions in the marketplace.